package cn.demoncat.util.kafka.aop;

import cn.demoncat.util.mq.util.MqReceiveAspectUtil;
import cn.demoncat.util.web.SpringUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * MQ消费监听
 *
 * @author 延晓磊
 *
 * @since 2018年8月10日
 */
@Aspect
@Component
public class KafkaMqReceiveAspect {

	@Resource
	private SpringUtil springUtil;

	/**
	 * MQ消费者监听
	 * 
	 * @param joinPoint
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月12日
	 */
	@Around("@annotation(org.springframework.kafka.annotation.KafkaListener)")
	public void around(ProceedingJoinPoint joinPoint) {
		// 获取主题，记录日志
		MqReceiveAspectUtil.around(joinPoint, method -> springUtil.resolve(method.getAnnotation(KafkaListener.class).topics()[0]));
	}

}
